In [1]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame
In [2]:
from numpy.random import randint
dices = randint(1,7,(5,2))
dices
Out[2]:
columns オプションで、各列の column 名を指定します。
In [3]:
diceroll = DataFrame(dices, columns=['dice1','dice2'])
diceroll
Out[3]:
In [4]:
city = Series(['Tokyo','Osaka','Nagoya','Okinawa'], name='City')
city
Out[4]:
In [5]:
temp = Series([25.0,28.2,27.3,30.9], name='Temperature')
temp
Out[5]:
In [6]:
humid = Series([44,42,np.nan,62], name='Humidity')
humid
Out[6]:
各列の column 名と対応する Series オブジェクトのディクショナリを与えて、DataFrame を生成します。
In [7]:
cities = DataFrame({'City':city, 'Temperature':temp, 'Humidity':humid})
cities
Out[7]:
In [8]:
data = {'City': ['Tokyo','Osaka','Nagoya','Okinawa'],
'Temperature': [25.0,28.2,27.3,30.9],
'Humidity': [44,42,np.nan,62]}
cities = DataFrame(data)
cities
Out[8]:
はじめに、column 名だけを指定した DataFrame を作成します。
In [9]:
diceroll = DataFrame(columns=['dice1','dice2'])
diceroll
Out[9]:
対応するデータを Series オブジェクトとして用意します。この際、index オプションで column 名に対応する名前を付けておきます。
In [10]:
oneroll = Series(randint(1,7,2), index=['dice1','dice2'])
oneroll
Out[10]:
用意した DataFrame の append メソッドで、Series オブジェクトを追加します。
In [11]:
diceroll = diceroll.append(oneroll, ignore_index=True)
diceroll
Out[11]:
In [12]:
diceroll = DataFrame(columns=['dice1','dice2'])
for i in range(1000):
diceroll = diceroll.append(
Series(randint(1,7,2), index=['dice1','dice2']),
ignore_index = True)
diceroll[:5]
Out[12]:
DataFrameのdescribeメソッドで、記法的な統計値を確認することができます。
In [13]:
diceroll.describe()
Out[13]:
In [14]:
diceroll1 = DataFrame(randint(1,7,(5,2)),
columns=['dice1','dice2'])
diceroll1
Out[14]:
In [15]:
diceroll2 = DataFrame(randint(1,7,(3,2)),
columns=['dice1','dice2'])
diceroll2
Out[15]:
In [16]:
diceroll3 = diceroll1.append(diceroll2)
diceroll3
Out[16]:
ignore_index=True を指定すると、index は通し番号になるように再割当てが行われます。
In [17]:
diceroll4 = diceroll1.append(diceroll2, ignore_index=True)
diceroll4
Out[17]:
配列の index 記法で、まだ存在しない column 名を指定すると、新しい列が用意されます。
In [18]:
diceroll = DataFrame()
diceroll['dice1'] = randint(1,7,5)
diceroll
Out[18]:
In [19]:
diceroll['dice2'] = randint(1,7,5)
diceroll
Out[19]:
pd.concat 関数で複数の Series を列として結合できます。(axis=1 は列方向での結合を意味します。)
In [20]:
dice1 = Series(randint(1,7,5),name='dice1')
dice2 = Series(randint(1,7,5),name='dice2')
diceroll = pd.concat([dice1, dice2], axis=1)
diceroll
Out[20]:
pd.concat 関数で既存の DataFrame に Series を追加することもできます。
In [21]:
dice3 = Series(randint(1,7,5),name='dice3')
diceroll = pd.concat([diceroll, dice3], axis=1)
diceroll
Out[21]:
(1) 0≦x≦1の範囲を等分した num 個の点ついて、「sin(2πx) + 正規分布の乱数(平均0, 標準偏差0.3)」を計算した array を返す関数 create_dataset(num) を作成してください。
(2) (1)の関数について、xの値と、対応する「y = sin(2πx) + 正規分布の乱数(平均0, 標準偏差0.3)」の値を列に持つDataFrameを返すように修正してください。(列の名前は、それぞれ 'x' および 'y' とします。)
例えば、次のような実装方法が考えられます。複数の方法を試してみてください。
(3) (2)の関数を用いて、num=1000 のデータフレームを作成した後、describe()メソッドでデータの統計情報を確認してください。